﻿using System.Text;
using Npgsql;
using System.Data.SqlClient;
using System.Data;
using System.Collections;
using System.Collections.Generic;

namespace HoldemManagerDAL
{
    /// <summary>
    /// Classe principale de connection aux données , ce fichier contient  toutes les méthodes pour acceder aux
    /// donnée concernant les joueurs
    /// </summary>
    public partial class Database
    {

        /// <summary>
        /// La liste de tous les sites de pokers
        /// </summary>
        /// <returns></returns>
        public List<DTO.pokersites> GetPokerSites()
        {
            return GetPokerSites("");
        }

        /// <summary>
        /// La liste de tous les sites de pokers coresspondant à un filtre donnée
        /// </summary>
        /// <returns></returns>
        /// <param name="FilterClause">Le filtre</param>
        public List<DTO.pokersites> GetPokerSites(string FilterClause)
        {
            return _GetPokerSites(FilterClause);
        }

        /// <summary>
        /// Un Site par son ID
        /// </summary>
        /// <returns></returns>
        public DTO.pokersites GetPokerSitesById(int Id)
        {
            List<DTO.pokersites> list = _GetPokerSites("site_id="+Id.ToString());
            return list.Count > 0 ? list[0] : null;
        }



        //fonction interne de sélection
        internal List<DTO.pokersites> _GetPokerSites(string FilterClause)
        {
            if(string.IsNullOrEmpty(FilterClause)) 
                return this.GetDBObjectByCustomFilter<DTO.pokersites>(SQLStatement.PokerSites_SelectAll,"1=1");
            else
                return this.GetDBObjectByCustomFilter<DTO.pokersites>(SQLStatement.PokerSites_SelectAll,FilterClause);

        }

        /// <summary>
        /// Chercher un player par son ID
        /// </summary>
        /// <param name="PlayerId"></param>
        /// <returns></returns>
        public List<DTO.players> GetPlayerById(int  PlayerId)
        {
            return this.GetDBObjectByCustomFilter<DTO.players>(SQLStatement.Player_SelectAll, "player_id=" + PlayerId.ToString());
        }


        /// <summary>
        /// La liste des joueurs pour un site donnés
        /// </summary>
        /// <param name="site"></param>
        /// <returns></returns>
        public List<DTO.players> GetPlayerBySite(DTO.pokersites  site)
        {
            return this.GetDBObjectByCustomFilter<DTO.players>(SQLStatement.Player_SelectAll, "site_id=" + site.site_id.ToString());
        }


    }
}
